Skip to content

[PGS] 과일장수 - #82

Open
been12151 wants to merge 19 commits into
mainfrom
week4/fruit-seller
Open

[PGS] 과일장수#82
been12151 wants to merge 19 commits into
mainfrom
week4/fruit-seller

Conversation

@been12151

Copy link
Copy Markdown
Owner

🍪 문제 이름

Resolve: 과일 장수

🍊 문제 정의

input

  • k : 과일의 최고 등급 (1 이상 9 이하)
  • m : 한 상자에 담을 과일 수 (1 이상 10 이하)
  • score : 과일의 등급이 담긴 배열 (1 이상 1,000,000 이하)

output

  • 판매 가능한 상자들의 이익 합계 (각 상자의 이익 = 상자 내 최저 등급 × m)

예시

k m score result
3 4 [1, 2, 3, 1, 2, 3, 1] 8
4 3 [4, 1, 2, 2, 4, 4, 4, 4, 1, 2, 4, 2] 33

🍑 알고리즘 설계

score를 내림차순 정렬 후 m개씩 슬라이싱해 상자를 구성. 남은 과일이 m개 미만이면 버림.
각 상자의 이익은 min(box[i]) * m으로 계산해 누적.

def solution(k, m, score):
    answer = 0
    box = []
    new_score = sorted(score, reverse=True)
    for i in range(0, len(new_score), m):
        if i + m <= len(new_score):
            box.append(new_score[i:i+m])
    for i in range(len(box)):
        answer += min(box[i]) * len(box[i])
    return answer

🥝 최악 수행 시간 복잡도

  • O(n log n) (n = score의 길이)
  • 정렬에 O(n log n), 이후 슬라이싱과 min() 호출은 O(n)이므로 전체 O(n log n)

🍰 특이 사항 (Optional)

내림차순 정렬 후 m개씩 슬라이싱하면 각 구간의 마지막 원소가 이미 최솟값이라 min() 호출 없이 box[i][-1]로 바로 쓸 수 있었는데 아깝다.

@been12151
been12151 requested review from gayo73 and yangyeeeun July 13, 2026 13:45
@been12151 been12151 self-assigned this Jul 13, 2026
@been12151 been12151 linked an issue Jul 14, 2026 that may be closed by this pull request
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[PGS] 과일장수 / level 1

2 participants